﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Timetabling.Core.Contracts
{
    public interface IGenericDAO<T>
    {
        /// <summary>
        /// Añadir objeto
        /// </summary>
        /// <param name="t"></param>
        void Add(T t);
        /// <summary>
        /// Actualizar objeto
        /// </summary>
        /// <param name="t"></param>
        void Update(T t);
        /// <summary>
        /// Traer un objeto por su id
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        T Get(Guid id);
        /// <summary>
        /// Traer todos
        /// </summary>
        /// <returns></returns>
        IList<T> GetAll();
        /// <summary>
        /// Cuenta...
        /// </summary>
        /// <returns></returns>
        int Count();
        /// <summary>
        /// Eliminar un objeto
        /// </summary>
        /// <param name="t"></param>
        void Remove(T t);

    }
}
